#include <iostream>
#include "include/Pion.h"
#include "include/Visitor.h"
#include "include/Territoire.h"
#include "include/Continent.h"
#include "include/Monde.h"
#include "include/PionManager.h"
#include "include/Jeu.h"
#include "include/Joueur.h"

using namespace std;


Pion::Pion(Joueur * _joueur, Territoire * _territoire, PionManager::Level _level )
   : joueur(_joueur), 
     couleur(new Couleur(_joueur->getCouleur())), 
     territoire(_territoire), 
     level(_level)
{}


Pion::~Pion()
{
   //printf("Destruction de Pion!\n");
}

void Pion::setAlpha(const float _a)
{ 
   couleur->couleur_rgba[3]=_a; 
}

const float Pion::getAlpha() const
{
   return couleur->couleur_rgba[3];
}

void Pion::accept(Visitor * _visitor)
{
   _visitor->visit(this);
}

const float * Pion::getCouleur()
{ 
   return *couleur; 
}

Model3D* Pion::getModelLevel()
{
   return Jeu::jeu->getPionManager()->getModel3DPion( level );
}

ostream & operator << (ostream & out, const Pion & _pion) 
{ 
   out << "Pion: " << endl;
   out << "territoire associe: " << _pion.getTerritoire()->getNom() << endl;

   return out;
}
